<?php

class CAjax{
	
	/**
	 * @var CAjaxJavaScript
	 */
	public static $JS = null;
	
	
	public static function init(){
		self::$JS = new CAjaxJavaScript();
	}
	
	/**
	* Envia un alert a pantalla con un mensaje de los errores en el arreglo
	* @param CBaseModel $model
	* @param String $message
	*/
	public static function sendListError($model, $list_error){
		$ajax_model = new CAjaxModel();
		$message = '';
		$count = 1;
		
		$list_ordered = array();
		foreach(get_object_vars($model) as $field){
			if($list_error[$field->id_control]!=null){
				$list_ordered[$field->id_control] = $list_error[$field->id_control];
			}
		}
		
		foreach($list_ordered as $key => $value){
			if($count==1){
				//Se determina el primer elemento
				$ajax_model->_selected_item = $key;
			}
			$message .= "- ".$value."<br/>";
			if($count>=10){ break; }
			$count++;
		}
		
		if(count($list_ordered)>10){
			$message .= "<hr/>";
			$message .= (count($list_ordered) - 10)." errores mas."; 
		}
		
		$ajax_model->_message = $message;
		$ajax_model->_dialog_type = EDialogType::Error;
		App::$Response->addView('ajax/view_message.php', $ajax_model);
		App::$Response->render();
	}
	
	/**
	 * Envia un alert a pantalla con un mensaje.
	 * @param String $message
	 * @param EDialogType $type
	 */
	public static function sendAlertMessage($message, $type){
		$ajax_model = new CAjaxModel();
		$ajax_model->_message = $message;
		$ajax_model->_dialog_type = $type;
		App::$Response->addView('ajax/view_message.php', $ajax_model);
		App::$Response->render();
	}
	
	/**
	 * Genera una peticion de redireccionamiento mediante GET mostrando spinner de espera.
	 * @param String $url Direccion a la cual se realizara la peticion.
	 * @param String $div_update Div donde se pondra el resultado de la operacion.
	 */
	public static function sendRedirectDivSpinner($url, $div_update){
		$model = new CAjaxModel();
		$model->_div_update = $div_update;
		$model->_url = $url;
		App::$Response->addView('ajax/view_redirect_div.php', $model);
		App::$Response->render();
	}
	
	/**
	 * Genera una peticion de redireccionamiento mediante mediante GET mostrando pantalla modal de espera.
	 * @param String $url Direccion a la cual se realizara la peticion.
	 * @param String $div_update Div donde se pondra el resultado de la operacion.
	 * @param String $div_modal Div que se mostrara de forma modal Defaul : ['enviroment']['div_modal_updater']
	 * @param String $title Titulo que utilizara el div modal Defaul : ['enviroment']['app_name']
	 * @para String $message Mensaje que se mostrara antes de disparar el redireccionamiento.
	 */
	public static function sendRedirectDivModal($url, $div_update, $div_modal=null, $title=null, $message=null){
		$model = new CAjaxModel();
		$model->_url = $url;
		$model->_div_update = $div_update;
		$model->_message = $message;
		$model->_div_modal = ($div_modal) ? $div_modal : Config::$opt['enviroment']['div_body'];
		$model->_title = ($title) ? $title : Config::$opt['enviroment']['app_name'];
		
		App::$Response->addView('ajax/view_redirect_div.php', $model);
		App::$Response->render();
	}
	
	/**
	 * Redirecciona la pagina completamente mediante ajax
	 * @param String $url Direccion donde se quiere redireccionar
	 */
	public static function sendRedirectPage($url){
		$model = new CAjaxModel();
		$model->_url = $url;
	
		App::$Response->addView('ajax/view_redirect_page.php', $model);
		App::$Response->render();
	}
} CAjax::init(); //Inicializa objetos